package zzps.exeed.kernel.awareness;

import zzps.exeed.kernel.core.PandaContainer;
import zzps.exeed.kernel.core.PandaEmbryo;
import zzps.exeed.kernel.holder.PandaHolder;

import java.lang.annotation.Annotation;
import java.util.function.Consumer;

public interface AwarenessProcessor {

    /**
     * 1给用户一个修改当前注册到容器实例的口子，
     * 2同时提供一个口子可以注册更多实例的口子
     */
    default <T extends Annotation> void afterCollect(PandaEmbryo<T> pandaEmbryo, Consumer<PandaEmbryo<?>> consumer){
    }

    /**
     * 在实例注册到容器之前执行
     */
    <T> void beforeRegister(PandaHolder<T> pandaHolder, PandaContainer pandaContainer);

    /**
     * 在实例注册到容器之后执行
     */
    <T> void afterRegister(PandaHolder<T> pandaHolder);
}
